Bug 437791 – Animation is played at the wrong speed
authorBjörn Lindqvist <bjourne@gmail.com>
Fri, 29 Aug 2008 22:21:32 +0000 (22:21 +0000)
committerBjörn Lindqvist <bjornl@src.gnome.org>
Fri, 29 Aug 2008 22:21:32 +0000 (22:21 +0000)
2008-08-29  Björn Lindqvist  <bjourne@gmail.com>

Bug 437791 – Animation is played at the wrong speed

* gdk-pixbuf/io-gif.c (gif_get_lzw): Better 100 ms timeout for
broken GIFs with 0 frame timeout.

svn path=/trunk/; revision=21242

ChangeLog
gdk-pixbuf/io-gif.c

index b48938557d9f7f53b0b4c137afec91c0b1396546..77ae1fda0609010b8bcc75d1187e49e68d3aa5a7 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,10 @@
+2008-08-29  Björn Lindqvist  <bjourne@gmail.com>
+
+       Bug 437791 – Animation is played at the wrong speed
+
+       * gdk-pixbuf/io-gif.c (gif_get_lzw): Better 100 ms timeout for
+       broken GIFs with 0 frame timeout.
+
 2008-08-29  Christian Dywan  <christian@imendio.com>
 
        Bug 549810 – Memory leaks in printing code
index ef5a7213fb4b100e91243ccfa4cd72dab23dba4f..0a5803fb0cc1e5b4d6d7dff840f9aa1430a9c2f4 100644 (file)
@@ -874,10 +874,14 @@ gif_get_lzw (GifContext *context)
                 /* GIF delay is in hundredths, we want thousandths */
                 context->frame->delay_time = context->gif89.delay_time * 10;
 
-                /* Some GIFs apparently have delay time of 0,
-                 * that crashes everything so set it to "fast".
-                 * Also, timeouts less than 20 or so just lock up
-                 * the app or make the animation choppy, so fix them.
+                /* GIFs with delay time 0 are mostly broken, but they
+                 * just want a default, "not that fast" delay.
+                 */
+                if (context->frame->delay_time == 0)
+                        context->frame->delay_time = 100;
+
+                /* No GIFs gets to play faster than 50 fps. They just
+                 * lock up poor gtk.
                  */
                 if (context->frame->delay_time < 20)
                         context->frame->delay_time = 20; /* 20 = "fast" */